=========================================================================== BBS: The Abacus * HST/DS * Potterville MI Date: 06-14-93 (01:24) Number: 95 From: JIM LITTLE Refer#: NONE To: ERIC LOW Recvd: NO Subj: (2/4) Input routine Conf: (35) Quick Basi --------------------------------------------------------------------------- '>>> Start of page 2. CASE cNull PRINT "null. (Wait.. that isn't possible!)" END SELECT SUB cInput (text AS STRING, left AS INTEGER, right AS INTEGER,_ length AS INTEGER, flag AS INTEGER) 'Controlled input of text. Inputs string of text on current line, starting at ' left and continuing to right. If length is longer than space allows, text ' scrolls to left. 'Flag is set to Cescape, CupArrow, CdownArrow, CpageUp, CpageDown, or Cok ' depe nding on what ' key the user used to terminate input. Cok signifies normal (return) ' termina tion. DIM topletter AS INTEGER 'letter at left of window DIM curletter AS INTEGER 'letter at cursor position DIM finished AS INTEGER 'true if user finished ' typing line DIM keystroke AS INTEGER 'user's last keystroke DIM tabsp AS INTEGER 'number of spaces to tab ' when Tab pressed STATIC notinsert AS INTEGER 'false if insert is on, ' true otherwise text = RTRIM$(text) 'trim off all extra spaces topletter = 1 curletter = 1 finished = False Printline 1, text, left, right 'following in case cursor size changes between calls IF NOT notinsert THEN LOCATE , , , 4, 5 'change cursor size to large block ELSE LOCATE , , , 0, 5 'change cursor size to thin line END IF DO LOCATE , left + curletter - topletter, 1 GetStroke keystroke LOCATE , , 0 SELECT CASE keystroke CASE kInsert notinsert = NOT notinsert IF NOT notinsert THEN LOCATE , , , 4, 5 'change cursor size to thin line ELSE LOCATE , , , 0, 5 'change cursor size to large block END IF CASE kDelete IF LEN(text) >= 1 AND curletter <> LEN(text) + 1 THEN MID$(text, curletter) = MID$(text, curletter + 1) text = LEFT$(text, LEN(text) - 1) Printline topletter, text, left, right END IF CASE kBackspace IF curletter > 1 THEN text = LEFT$(text, curletter - 2) + RIGHT$(text,_ LEN(text) - curletter + 1) curletter = curletter - 1 IF curletter < topletter THEN topletter = topletter - 1 END IF Printline topletter, text, left, right END IF CASE kHome IF curletter > 1 THEN curletter = 1 IF curletter < topletter THEN topletter = 1 Printline topletter, text, left, right END IF END IF CASE kEnd IF curletter < LEN(text) + 1 THEN curletter = LEN(text) + 1 IF curletter > topletter + right - left THEN topletter = LEN(text) - right + left + 1 Printline topletter, text, left, right END IF END IF CASE kLeftArrow IF curletter > 1 THEN curletter = curletter - 1 '>>> Continued on page 3 --- * Origin: The Radix Point: Astoria, OR (1:105/330.9) SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1 SEEN-BY: 153/752 154/40 77 157/110 159/100 125 430 575 950 203/23 209/209 SEEN-BY: 261/1023 280/1 390/1 396/1 15 397/2 2230/100 2440/5 3603/20